<?php
declare(strict_types=1);
/**
 * 短信发送公共类
 * Class Sms
 * @package app\common\business
 */
namespace app\common\business;

use app\common\lib\sms\AliSms;
use app\common\lib\Num;
use app\common\lib\ClassArr;


class Sms
{
    /**
     * 发送短信逻辑
     * @param string $phoneNumber 发送的手机号啊
     * @param int $len 验证码长度
     * @param string $type 发送源类型
     * @return bool
     */
    public static function sendCode(string $phoneNumber, int $len, string $type="qq"): bool
    {
        //生成验证码
        $code = Num::getCode($len);
//        $sms=true;
        //工厂模式
//        $type=ucfirst($type);
//        $class="app\common\lib\sms\\".$type."Sms";
//        //$sms = AliSms::sendCode($phoneNumber, $code);
//        $sms= $class::sendCode($phoneNumber, $code);
        $classStas=ClassArr::smsClassStat();
        $classObj=ClassArr::initClass($type,$classStas);
        $sms=$classObj::sendCode($phoneNumber, $code);
        if ($sms) {
            //短信验证码记录redis ，给出有效时间
           cache(config("redis.code_pre") . $phoneNumber, $code, config("redis.code_expire"));
        }
        return $sms;
    }
}